package com.wzh.core.utils;

import java.lang.reflect.Method;

/**
 * @description:
 * @author: wangzouhuax
 */
public class RpcMethodUtils {


    private static final String ARG_CONNECTOR = "&";

    /**
     * 检查方法是否是RPC方法，而不是本地方法
     */
    public static boolean checkRpcMethod(Method method) {
        return method.getDeclaringClass().equals(Object.class);
    }

    /**
     * 获取方法签名
     * 解决方法重载问题
     */
    public static String getMethodSignature(Method method) {
        Class<?>[] parameterTypes = method.getParameterTypes();
        StringBuilder sb = new StringBuilder();
        if (parameterTypes.length > 0) {
            for (Class<?> parameterType : parameterTypes) {
                // 获取参数类型 并 拼接  java.lang.Integer&java.lang.String&
                sb.append(parameterType.getCanonicalName()).append(ARG_CONNECTOR);
            }
            sb.deleteCharAt(sb.length() - 1);
        }
        return String.format("%s#%s", method.getName(), sb);
    }

}
